<?php

trait HandleImagesTrait {
    /*
     * Agrega imagenes a la entidad (many to many). Asigna posicion en la pivot. 
     */
    public function addImagesToEntidad($images, $entidad, $nameForKeyEntidad, $tablaPivot, $claseImagen) {
        // Para inicializar position en updates
        $pos_ini = DB::table($tablaPivot)
                ->where($nameForKeyEntidad, '=', $entidad->id)
                ->count('id');

        $position = $pos_ini;

        foreach ($images as $image) {
            $imagenNew = new $claseImagen;
            $imagenNew->title = '';
            $imagenNew->img = $image;
            $imagenNew->img->instanceWrite('file_name', $this->getFilenameSlug($image) );
            $imagenNew->save();
            $entidad->images()->save($imagenNew, array('position' => $position));
            $position++;
        }
    }

    public function getFilenameSlug($file) {
        $extension = $file->getClientOriginalExtension(); // extension
        $slug = Str::slug( basename($file->getClientOriginalName(), $extension) ); // nombre sin extension
        return $slug . '.' . $extension;
    }
}
